Pokémon Throwback Music Hacking Notes
by RichterSnipes

You automatically receive the GB Sounds item at the beginning of the game. This is to integrate it into the game as an option as tightly as possible.
If you import a save to the hack that doesn't have the item already, examine the NES in your room. The text will be the same, but you'll have the item added to your Key Items pocket.
The altered scripts are the second map script for your room and the NES in your room. There's no longer text associated with obtaining it.

The 8-bit voice table repurposes the Teachy TV voice table at 0x4A1608, which is normally almost entirely unused. It lasts for 0x600 bytes.
Instruments are ordered based on channel, duty, and decay.
The voice numbers for the "Teachy TV Menu" song have been changed to accomodate for this. These changes can be seen at offsets 0x6FBDD5, 0x6FBDFE, and 0x6FBE22.

Elements I inserted for the 8-bit music can be found at these locations:

0x71A240: Triangle Wave Patterns; 0x90 bytes, 0x10 per pattern
0x71A2D0: Soundbank
0x71ADAC: "Jigglypuff's Song" sample
0x730138: Music tracks and headers

The item description is strictly based on the HeartGold/SoulSilver description, altered slightly to fit within the space limitations of FireRed/LeafGreen.
The item usage text is taken straight from HeartGold/SoulSilver, along with a spacing adjustment to make it flow better.
	
"Jigglypuff's Song" is sampled at 13379Hz, the sample playback rate of the GBA Pokémon games. Yeah, it's terrible...
I still have a copy at 44100Hz and 16-bit resolution.
The extra .wav files for "Jigglypuff's Song" are for an attempt at creating proper samples out of the two square wave tracks. The results were ultimately disappointing.
There are also .wav files for the second version of the "Game Freak Logo" sound, originally changed in Japanese Blue and carried over to all international releases.

On the 8-bit version of "Victory! (Gym Leader Battle)" restarting after beating the Champion:
The game is hardcoded via assembly code to only read and accept a specific song header for seamless playback transition between battle and the overworld.
This hardcoded pointer is at 0x55E20. The routine for it begins at 0x55DC4.
The only way I can make playback work properly for both the standard and 8-bit soundtracks is if I intercept the command and redirect it to an ASM routine that allows multiple songs to work that way.
Since I can't do ASM hacking, I won't be able to fix this by myself.

Sappy is a fatally-flawed program, but it's (sadly) still essential for music hacking. It's possible to go without it, but it makes things even more rough.
Getting it installed is a hassle, and messing with the install directory anytime can cause the entire thing to refuse to work afterwards.
If sampling the 8-bit music from my hack with Sappy, open Sappy.xml and change the music bank pointer to 0x71A2D0. For BPRE v1.0, the default pointer is 0x4A32CC. Keep the following things in mind:

*Noise instruments are completely off. They sound nothing like they actually do in-game.
*Notes that rise in loudness will not play properly at all. Whoever made the program didn't consider that PSG instruments handle decay differently from sample-based instruments.
*Modulation isn't handled correctly.
*Playing "Mystery Gift" from the 8-bit music bank will cause it to constantly loop the beginning of the track.
*Pitch bending isn't handled correctly. Then again, VBA-M might have problems with it, too...
*Changing playback speed will cause decaying notes to not play right.
*Increasing playback speed beyond 9999 will cause Sappy to crash.
*Trying to play a track before Song #1 (the item healing sound) will cause Sappy to crash.
*Trying to use a ROM or file that's been edited by another program but not saved will cause Sappy to crash.
*Playing "Epilogue" from the 8-bit music bank will cause Sappy to crash. I don't know why, but it might be related to how it expects to read a track's tempo.

A note on cries:

Cries have been inserted using Cry Editor.
Cries start at 0xA7EFD4 (start of Bulbasaur) and end at 0xCFFFFF (end of Celebi).
Each cry is sampled at 13379Hz at 8-bit resolution. Any higher quality results in minimal sound quality gains, but massive file size increases.
Inserted cries don't use Game Freak's compression. This gives them an appreciable quality boost, but means a tradeoff in space used.
All cries have been ripped from Pokémon Crystal. Cries from R/G/B/Y have lengthened cry endings and occasionally don't play correctly. G/S/C standardized their sound for all games up until X/Y.
I still have copies of all cries at 44100Hz and 16-bit resolution.
Charizard (006) and Rhyhorn (111) share the same cry, as do Poliwag (060) and Ditto (132).